package net.lzzy.practices.utils;

import com.alibaba.fastjson.JSONObject;
import net.lzzy.practices.web.models.BaseInfo;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.reflect.MethodSignature;

/**
 * @author 1
 */
public class AspectUtil {
    private static final String ARG_TOKEN = "token";

    public static String getToken(ProceedingJoinPoint point) {
        Object[] args = point.getArgs();
        //1直接到在列方法参数中
        String[] names = ((MethodSignature)point.getSignature()).getParameterNames();
        int i = 0;
        for (String name : names) {
            if (ARG_TOKEN.equals(name)) {
                return args[i].toString();
            }
            i++;
        }

        if (args[0] instanceof BaseInfo) {
            //2使用info参数类Baseinfo
            return ((BaseInfo)args[0]).getToken();
        }else {
            //3使用JSONObject对象
            JSONObject obj =  (JSONObject) args[0];
            return obj.getString(ARG_TOKEN);
        }

    }
}
//token参数的三种形式  1直接到在列方法参数中 2使用info参数类Baseinfo 3使用JSONObject对象